using System;
using System.Collections.Generic;
using SheLife.Domain.Common;

namespace SheLife.Domain.Entities
{
    /// <summary>
    /// 衣物实体
    /// </summary>
    public class Clothing : BaseEntity
    {
        public int UserId { get; set; }
        public string ClothingName { get; set; } // 衣物名称
        public string Category { get; set; } // 分类：上衣、裤子、裙子、外套等
        public string SubCategory { get; set; } // 子分类
        public string Brand { get; set; } // 品牌
        public string Color { get; set; } // 颜色
        public string Size { get; set; } // 尺码
        public string Material { get; set; } // 材质
        public string Style { get; set; } // 风格
        public string Season { get; set; } // 适用季节：春、夏、秋、冬
        public string ImageUrl { get; set; } // 图片URL
        public decimal Price { get; set; } // 价格
        public DateTime PurchaseDate { get; set; } // 购买日期
        public string Tags { get; set; } // 标签
        public bool IsFavorite { get; set; } // 是否收藏
        public int WearCount { get; set; } // 穿着次数
        public DateTime? LastWornDate { get; set; } // 上次穿着日期
        public string StorageLocation { get; set; } // 存放位置
        public string Notes { get; set; } // 备注
        public DateTime CreatedAt { get; set; }
        public DateTime UpdatedAt { get; set; }
        public bool IsDeleted { get; set; }

        // 导航属性
        public virtual User User { get; set; }
        public virtual ICollection<OutfitClothing> OutfitClothings { get; set; }
    }

    /// <summary>
    /// 穿搭实体
    /// </summary>
    public class Outfit : BaseEntity
    {
        public int UserId { get; set; }
        public string OutfitName { get; set; } // 穿搭名称
        public string Description { get; set; } // 描述
        public string Occasion { get; set; } // 场合：通勤、约会、休闲、正式等
        public string Season { get; set; } // 适用季节：春、夏、秋、冬
        public string Style { get; set; } // 风格
        public string ImageUrl { get; set; } // 图片URL
        public bool IsFavorite { get; set; } // 是否收藏
        public bool IsPublic { get; set; } // 是否公开
        public int ViewCount { get; set; } // 查看次数
        public int LikeCount { get; set; } // 点赞次数
        public string Tags { get; set; } // 标签
        public string Notes { get; set; } // 备注
        public DateTime CreatedAt { get; set; }
        public DateTime UpdatedAt { get; set; }
        public bool IsDeleted { get; set; }

        // 导航属性
        public virtual User User { get; set; }
        public virtual ICollection<OutfitClothing> OutfitClothings { get; set; }
        public virtual ICollection<OutfitRecord> OutfitRecords { get; set; }
    }

    /// <summary>
    /// 穿搭衣物关联实体
    /// </summary>
    public class OutfitClothing : BaseEntity
    {
        public int OutfitId { get; set; }
        public int ClothingId { get; set; }
        public string Position { get; set; } // 位置：上装、下装、外套、鞋子等
        public int SortOrder { get; set; } // 排序
        public DateTime CreatedAt { get; set; }
        public DateTime UpdatedAt { get; set; }
        public bool IsDeleted { get; set; }

        // 导航属性
        public virtual Outfit Outfit { get; set; }
        public virtual Clothing Clothing { get; set; }
    }

    /// <summary>
    /// 穿搭记录实体
    /// </summary>
    public class OutfitRecord : BaseEntity
    {
        public int UserId { get; set; }
        public int OutfitId { get; set; }
        public DateTime WearDate { get; set; } // 穿着日期
        public string Occasion { get; set; } // 场合
        public string Weather { get; set; } // 天气
        public decimal Temperature { get; set; } // 温度
        public string Mood { get; set; } // 心情
        public string Feedback { get; set; } // 反馈
        public string Notes { get; set; } // 备注
        public DateTime CreatedAt { get; set; }
        public DateTime UpdatedAt { get; set; }
        public bool IsDeleted { get; set; }

        // 导航属性
        public virtual User User { get; set; }
        public virtual Outfit Outfit { get; set; }
    }

    /// <summary>
    /// 穿搭模板实体
    /// </summary>
    public class OutfitTemplate : BaseEntity
    {
        public string TemplateName { get; set; } // 模板名称
        public string Description { get; set; } // 描述
        public string Occasion { get; set; } // 场合：通勤、约会、休闲、正式等
        public string Season { get; set; } // 适用季节：春、夏、秋、冬
        public string Style { get; set; } // 风格
        public string LifeStage { get; set; } // 人生阶段：职场期、孕期、育儿期等
        public string ImageUrl { get; set; } // 图片URL
        public bool IsRecommended { get; set; } // 是否为推荐模板
        public int ViewCount { get; set; } // 查看次数
        public int LikeCount { get; set; } // 点赞次数
        public string Tags { get; set; } // 标签
        public DateTime CreatedAt { get; set; }
        public DateTime UpdatedAt { get; set; }
        public bool IsDeleted { get; set; }

        // 导航属性
        public virtual ICollection<OutfitTemplateItem> OutfitTemplateItems { get; set; }
        public virtual ICollection<UserOutfitTemplate> UserOutfitTemplates { get; set; }
    }

    /// <summary>
    /// 穿搭模板项目实体
    /// </summary>
    public class OutfitTemplateItem : BaseEntity
    {
        public int OutfitTemplateId { get; set; }
        public string ItemName { get; set; } // 项目名称
        public string Category { get; set; } // 分类：上衣、裤子、裙子、外套等
        public string SubCategory { get; set; } // 子分类
        public string Color { get; set; } // 颜色
        public string Style { get; set; } // 风格
        public string Material { get; set; } // 材质
        public string Description { get; set; } // 描述
        public string Tips { get; set; } // 小贴士
        public int SortOrder { get; set; } // 排序
        public DateTime CreatedAt { get; set; }
        public DateTime UpdatedAt { get; set; }
        public bool IsDeleted { get; set; }

        // 导航属性
        public virtual OutfitTemplate OutfitTemplate { get; set; }
    }

    /// <summary>
    /// 用户穿搭模板关联实体
    /// </summary>
    public class UserOutfitTemplate : BaseEntity
    {
        public int UserId { get; set; }
        public int OutfitTemplateId { get; set; }
        public bool IsFavorite { get; set; } // 是否收藏
        public int Rating { get; set; } // 评分：1-5
        public string Review { get; set; } // 评论
        public DateTime CreatedAt { get; set; }
        public DateTime UpdatedAt { get; set; }
        public bool IsDeleted { get; set; }

        // 导航属性
        public virtual User User { get; set; }
        public virtual OutfitTemplate OutfitTemplate { get; set; }
    }

    /// <summary>
    /// 穿搭建议实体
    /// </summary>
    public class OutfitSuggestion : BaseEntity
    {
        public int UserId { get; set; }
        public string SuggestionTitle { get; set; } // 建议标题
        public string Description { get; set; } // 描述
        public string Occasion { get; set; } // 场合
        public string Season { get; set; } // 季节
        public string Weather { get; set; } // 天气
        public decimal Temperature { get; set; } // 温度
        public string LifeStage { get; set; } // 人生阶段
        public string ImageUrl { get; set; } // 图片URL
        public bool IsRead { get; set; } // 是否已读
        public bool IsLiked { get; set; } // 是否喜欢
        public DateTime CreatedAt { get; set; }
        public DateTime UpdatedAt { get; set; }
        public bool IsDeleted { get; set; }

        // 导航属性
        public virtual User User { get; set; }
    }
}